package cn.minhx.dtm.starter.core.repository;

import cn.minhx.dtm.starter.core.model.TransactionRecord;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import org.springframework.data.domain.Limit;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
 * 事务记录数据访问接口
 *
 * @author min
 */
@Repository
public interface TransactionRepository extends JpaRepository<TransactionRecord, Long> {

	/**
	 * 查询需要处理的事务记录
	 *
	 * @param statuses
	 *            状态
	 * @param currentTime
	 *            当前时间
	 * @param limit
	 *            最大返回记录数
	 * @return 符合条件的事务记录列表
	 */
	List<TransactionRecord> findByStatusInAndNextRetryTimeLessThanEqualAndDeletedFalseOrderByPriorityAscNextRetryTimeAsc(
			Collection<String> statuses, LocalDateTime currentTime, Limit limit);
}
